/**
 * <b>项目名：</b>hclv-web<br/>  
 * <b>包名：</b>com.flea.hclv.service.impl<br/>  
 * <b>文件名：</b>HServicePartnerServiceImpl.java<br/>  
 * <b>版本信息：</b>1.0<br/>  
 * <b>日期：</b>2018年11月2日 下午10:12:18<br/>  
 * <b>COPYRIGHT 2010-2012 ALL RIGHTS RESERVED 虫子科技</b>-版权所有<br/>
 */
package com.flea.hclv.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.flea.hclv.util.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;
import com.flea.hclv.model.dao.HServicePartnerMapper;
import com.flea.hclv.model.entity.HServicePartner;
import com.flea.hclv.service.HServicePartnerService;
import com.flea.system.platform.session.FleaOrgUtils;

/**
 * @description TODO
 * @createTime 2018年11月2日 下午10:12:18
 * @modifyTime
 * @author myflea@163.com
 * @version 1.0
 */
@Service("servicePartnerService")
public class HServicePartnerServiceImpl implements HServicePartnerService {
	@Autowired
	private HServicePartnerMapper servicePartnerMapper;

	@Override
	public ServerResponse<String> updateServiceRelation(
			HttpServletRequest request, String model) {
		// 根据传递过来的参数，partnerid 进行查询是否有合作，如果有，则更新，若没有，则添加
		String userId = FleaOrgUtils.getCurUserUuid(request);
		JSONObject jsobj = JSONObject.parseObject(model);
		String updateStatus = jsobj.getString("status");

		String servicePatnerIds = jsobj.getString("serviceIds");

		List<String> patenrIds = JSONObject.parseArray(servicePatnerIds,
				String.class);

		String serviceOrgId = FleaOrgUtils.getCurrentUserDeptUuid(request);
		List<HServicePartner> serviceRelations = servicePartnerMapper
				.findByServiceId(serviceOrgId);

		List<HServicePartner> updateRealtions = new ArrayList<HServicePartner>();

		for (String pid : patenrIds) {
			for (HServicePartner hServicePartner : serviceRelations) {
				// 存在合作关系
				if (hServicePartner.getPartnerId().equals(pid)) {
					// 与当前取消或者添加合作类型判断,合作关系相同，不进行任何操作
					if (hServicePartner.getStatus().equals(updateStatus)) {
						patenrIds.remove(pid);
					} else {
						hServicePartner.setStatus(updateStatus);
						updateRealtions.add(hServicePartner);
						patenrIds.remove(pid);
					}
					break;
				}
			}

		}

		// 需要添加合作关系
		List<HServicePartner> saveList = new ArrayList<HServicePartner>();
		for (String savePartenId : patenrIds) {
			HServicePartner p = new HServicePartner();
			p.setCreateUser(userId);
			p.setPartnerId(savePartenId);
			p.setServiceId(serviceOrgId);
			p.setStatus(updateStatus);
		}

		servicePartnerMapper.saveBatch(saveList);
		servicePartnerMapper.updateBatch(updateRealtions);

		// 此时 patenrIds 为不存在合作关系的,需要添加合作关系

		return ServerResponse.createByErrorMessage("关系更新成功");
	}

}
